package com.app.lcl.test;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;

import com.app.lcl.entities.News;
import com.app.lcl.utils.HibernateUtil;

/**
 * 测试时要双击方法名确保只执行一个方法，不然会把所有的测试都执行，干扰结果
 * @author lcl
 *
 */
public class testJunit {
	
	/**
	 * 测试前
	 * @throws Exception
	 */
	@Before
	public void setUp() throws Exception{
		System.out.println("----初始化数据----");
	}
	/**
	 * 测试后
	 * @throws Exception
	 */
	public void tearDown() throws Exception{
		System.out.println("----释放数据----");
	}
	
	@Test
	public void testSave(){
		Session session=HibernateUtil.currentSession();
		Transaction tx=session.beginTransaction();
		News n = new News();
		//n.setId(6);
		n.setTitle("新闻标题1");
		n.setContent("新闻内容4");
		session.save(n);//insert obj
		tx.commit();//提交对象
		HibernateUtil.closeSession();
	}
	
	@Test
	public void testSaveOrUpdate(){
		//打开线程安全的的session对象
		Session session=HibernateUtil.currentSession();
		//打开事务
		Transaction tx=session.beginTransaction();
		News n = new News();
		n.setId(2);
		n.setContent("内容2");
		n.setTitle("标题51");
		session.saveOrUpdate(n);
		tx.commit();
		HibernateUtil.closeSession();
	}
	
	@Test
	public void testUpdate(){
		//打开线程安全的的session对象
		Session session=HibernateUtil.currentSession();
		//打开事务
		Transaction tx=session.beginTransaction();
		News n = (News)session.get(News.class,2);
		System.out.println(n);
		n.setContent("修改过的内容xx");
		System.out.println(n);
		session.update(n);
		tx.commit();
		HibernateUtil.closeSession();
	}
	
	@Test
	public void testDelete(){
		//打开线程安全的的session对象
		Session session=HibernateUtil.currentSession();
		//打开事务
		Transaction tx=session.beginTransaction();
		News n = (News)session.get(News.class,2);
		session.delete(n);
		tx.commit();
		HibernateUtil.closeSession();
	}
	
	
}
